package com.skt.domain.PO;

import com.baomidou.mybatisplus.annotation.*;
import com.skt.domain.ENUM.AccountStatus;
import com.skt.domain.ENUM.UserRole;
import com.skt.domain.ENUM.UserRoleStatus;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 用户实体类
 */
@Data
@TableName("user")
public class User {

    /**
     * 主键 ID，自增
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户名（登录账号）
     */
    @TableField("username")
    private String username;

    /**
     * 密码（加密存储）
     */
    @TableField("password")
    private String password;

    /**
     * 真实姓名
     */
    @TableField("real_name")
    private String realName;

    /**
     * 手机号
     */
    @TableField("phone")
    private String phone;

    /**
     * 邮箱
     */
    @TableField("email")
    private String email;

    // 数据库映射字段：用枚举
    @TableField("role")
    private UserRole role;

    @TableField("account_status")
    private AccountStatus accountStatus;

    @TableField("role_status")
    private UserRoleStatus roleStatus;

    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;

    /**
     * 店铺名称（仅商家使用）
     */
    @TableField("shop_name")
    private String shopName;

    /**
     * 审核通过时间
     */
    @TableField("approved_at")
    private LocalDateTime approvedAt;

    /**
     * 审核人ID（管理员 user.id）
     */
    @TableField("approved_by")
    private Long approvedBy;

    /**
     * 商家注册被拒绝时间
     */
    @TableField("rejected_at")
    private LocalDateTime rejectedAt;

    /**
     * 拒绝人ID（管理员 user.id）
     */
    @TableField("rejected_by")
    private Long rejectedBy;

    /**
     * 拒绝原因（仅商家角色使用）
     */
    @TableField("rejection_reason")
    private String rejectionReason;
}